﻿using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Security.Principal;

namespace Framework.Data.Security
{
    public class Principal : IPrincipal
    {

        #region "Membres"
        private Identity _identity;
        private List<string> _permissions = new List<string>();
		#endregion

        #region "Constructeurs"
        /// <summary>
        /// Constructeur interne seulement
        /// </summary>
        /// <param name="identity">Object identity</param>
        /// <param name="roles">Liste des rôles de l'utilisateur</param>
        /// <remarks></remarks>
        public Principal(Identity identity, List<string> roles)
        {
            this._identity = identity;
            this._permissions = roles;
        }

        #endregion

        #region "IPrincipal"
        public System.Security.Principal.IIdentity Identity
        {
            get { return this._identity; }
        }

        public string Permissions
        {
            get { return string.Join(",", this._permissions.ToArray()); }
        }

        /// <summary>
        /// Fonction qui vérifie si l'utilisateur à le rôle
        /// </summary>
        /// <param name="permission">Permission à vérifier</param>
        /// <returns>Boolean</returns>
        /// <remarks>Permission doit avoir le format suivant : NomEntite_NomPermission_IdRegion</remarks>
        public bool IsInRole(string permission)
        {
            foreach (string permissionName in this._permissions)
            {
                if (permissionName.ToUpper().StartsWith(permission.ToUpper()))
                {
                    return true;
                }
            }
            return false;
        }
        #endregion


    }
}